bitkeeper revision 1.1159.213.2 (41dc5bb8NoFeyC8xMcZdstILsQ-Tqg)
authoriap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk>
Wed, 5 Jan 2005 21:27:20 +0000 (21:27 +0000)
committeriap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk>
Wed, 5 Jan 2005 21:27:20 +0000 (21:27 +0000)
patch from Leendert van Doorn <leendert@watson.ibm.com>

Hyperthreading on VMX is broken in the xeno-unstable.bk tree. The diff
below fixes this.
It turns out that the mtrr code clears too many bits, some of them cause
Xen to crash. Being a bit more precise fixes the problem.

xen/arch/x86/mtrr/generic.c

index 8da0c5b43c7a2da3ec80b71d8fa8153ba0b5506c..93d35350a7a9280ebf49099ef39b3c4144ff3524 100644 (file)
@@ -250,7 +250,7 @@ static void prepare_set(void)
        /*  Save value of CR4 and clear Page Global Enable (bit 7)  */
        if ( cpu_has_pge ) {
                cr4 = read_cr4();
-               write_cr4(cr4 & (unsigned char) ~(1 << 7));
+               write_cr4(cr4 & ~X86_CR4_PGE);
        }
 
        /* Flush all TLBs via a mov %cr3, %reg; mov %reg, %cr3 */